var _adDetector_version = "v1.0.0";
var system_Bounds = [
    [553,1987,996,2107], // 允许
    [558,2002,1008,2122], // 继续安装
    [72,1858,1008,1978],   // 继续安装
    [102,1272,978,1421],   // 以后再说- [102,1120,978,1269]现在打开
    [585,1172,777,1316]  // 取消
];
var jump_Bounds = [
    [396,1519,684,1576], // 跳转T051-我要更快拿奖
    [348,1519,732,1576], // 跳转T052-继续浏览更快拿奖
    [99,1124,981,1269], // 跳转T053-立即下载
    [225,1541,855,1703] // 跳转T054-立即领取
];
var jump_ignore_Bounds = [
    [162,1812,918,1932], // 跳转T001-去微信看全集
    [222,1160,858,1304], // 跳转T002-去玩小游戏
    [162,1704,918,1884], // 跳转T003-进入微信小游戏试玩/进入微信小游戏立即玩
    [351,1414,729,1480], // 跳转T004-我要直接拿奖励
    [378,1333,702,1399], // 跳转T005-我要加速领奖
    [219,1189,861,1304], // 跳转T006-去下载拿奖励/打开第三方应用
    [186,1336,894,1519], // 跳转T007-我要加速
    [396,1519,684,1576], // 跳转T008-我要更快拿奖
    [108,1918,972,2068], // 跳转T009-去看看
    [237,1532,842,1676], // 跳转T010-立即领取
    [558,1198,960,1351], // 跳转T012-去领奖励
    [438,1420,624,1477], // 跳转T013-立即前往[198,1384,864,1513], // 跳转T020-立即前往
    [175,1630,905,1796], // 跳转T014-立即打开
    [87,1405,993,1525], // 跳转T015-立即打开-我要加速领奖
    [144,1645,937,1816], // 跳转T016-我要免看本次广告
    [180,1346,900,1490], // 跳转T017-去领取奖励
    [217,1591,862,1726], // 跳转T018-去领取奖励
    [174,1154,906,1316], // 跳转T019-拿奖励
    [174,1188,906,1350], // 跳转T020-再试一次-继续体验
    // =========================以下安装广告控件==============================
    [216,2082,864,2145], // 下载X010-安装
    [60,1974,1020,2106], // 下载X009-安装
    [57,2077,1022,2181], // 下载X008-安装
    [363,2080,717,2164], // 下载X001-安装
    [84,2014,996,2134], // 下载X002-安装
    [171,1429,909,1570], // 下载X003-立即下载
    [75,1990,1005,2122], // 下载X004-立即下载
    [102,1123,978,1272], // 下载X005-立即下载
    [541,1226,960,1369], // 下载X006-安装
    [96,1936,914,2056] // 下载X007-安装
];
var inter_Bounds = [
    // 插屏控件 - 中间X按钮
    [495,1798,585,1891], // 插屏B301-中间X
    [495,1600,585,1690], // 插屏B302-中间X
    [495,1822,585,1915], // 插屏B303-中间X
    [540,1678,1080,1891], // 插屏B304-中间X
    [496,1951,584,2039], // 插屏B305-中间X
    [495,1801,585,1894], // 插屏B306-中间X
    [496,1611,584,1699], // 插屏B307-中间X
    [495,1608,585,1698], // 插屏B308-中间X
    [891,469,927,505], // 插屏B309-中间X
    [492,1555,588,1651], // 插屏B310-中间X

    // 插屏控件 - 左上X按钮
    [66,932,122,990], // 插屏B401-左上X

    // 插屏控件 - 右上X按钮 (B501-B527)
    [804,397,936,529], // 插屏B501-右上X
    [841,993,887,1039], // 插屏B502-右上X
    [858,427,930,499], // 插屏B503-右上X
    [858,428,930,500], // 插屏B504-右上X
    [861,610,1059,712], // 插屏B505-右上X
    [861,427,931,497], // 插屏B506-右上X
    [895,607,973,685], // 插屏B507-右上X
    [936,240,1014,318], // 插屏B508-右上X
    [896,606,974,684], // 插屏B509-右上X
    [930,336,1002,408], // 插屏B510-右上X
    [876,397,946,467], // 插屏B511-右上X
    [921,469,927,505], // 插屏B512-右上X
    [905,564,963,630], // 插屏B513-右上X
    [900,604,987,694], // 插屏B514-右上X
    [880,415,952,487], // 插屏B515-右上X
    [64,932,122,990], // 插屏B516-左上X
    [901,400,973,472], // 插屏B517-右上X
    [906,386,978,458], // 插屏B518-右上X
    [867,834,924,891], // 插屏B519-右上X
    [921,761,993,827], // 插屏B520-右上X
    [918,360,976,418], // 插屏B521-右上X
    [910,240,988,318], // 插屏B522-右上X
    [904,323,976,395], // 插屏B523-右上X
    [900,383,978,461], // 插屏B521-右上X
    [912,240,990,318], // 插屏B522-右上X
    [930,311,990,371], // 插屏B523-右上X 
    [918,421,976,479], // 插屏B524-右上X
    [776,250,836,310], // 插屏B525-右上X
    [884,424,972,512], // 插屏B526-右上X
    [884,487,972,575], // 插屏B527-右上X

    // 辅助检测跳动右上X
    [30,118,90,148], // 插屏B999-右上X

    // 插屏控件C - 左上X系列
    [0,897,138,1035], // 插屏C601-左上X
    [27,1237,102,1312], // 插屏C602-左上X
    [27,1360,102,1435], // 插屏C603-左上X

    // 插屏控件C - 右上X系列
    [987,1406,1041,1460], // 插屏C701-右上X
    [987,1379,1041,1433], // 插屏C702-右上X
    [987,1257,1041,1311], // 插屏C703-右上X
    [987,1284,1041,1338], // 插屏C704-右上X
    [1005,1170,1080,1248], // 插屏C705-右上X

    // 插屏控件 - 其他
    [486,2136,594,2186], // 插屏C801-不同意

    // 插屏控件 - 待确认 (B1309-B1320, C1635-C1648)
    [495,1843,585,1933], // 插屏B1309-中间X
    [453,1713,627,1842], // 插屏B1310-中间X
    [484,1600,595,1789], // 插屏B1311-中间X
    [495,1801,585,1894], // 插屏B1312-中间X
    [523,1465,559,1501], // 插屏B1313-中间X
    [486,1852,594,1960], // 插屏B1314-中间X
    [536,523,803,583], // 插屏B1315-中间X
    [489,1442,591,1510], // 插屏B1316-中间X
    [495,1489,585,1579], // 插屏B1317-中间X
    [497,1711,584,1798], // 插屏B1318-中间X
    [605,1694,785,1736], // 插屏B1319-中间X
    [728,518,933,590], // 插屏B1320-中间X
    [331,742,571,802], // 插屏C1635-右上X
    [195,581,315,653], // 插屏C1606-左上X
    [716,121,960,181], // 插屏C1607-左上X
    [687,127,960,205], // 插屏C1608-左上X
    [689,127,960,205], // 插屏C1610-左上X
    [204,1525,420,1588], // 插屏C1616-右上X
    [84,1378,996,1525], // 插屏C1617-右上X
    [78,1126,540,1267], // 插屏C1618-右上X
    [585,1153,777,1297], // 插屏C1611-右上X
    [453,1821,627,1995], // 插屏C1612-右上X
    [584,1172,771,1312], // 插屏C1614-右上X
    [675,1187,951,1274], // 插屏C1615-右上X
    [624,965,864,1025], // 插屏C1619-右上X
    [939,1759,981,1801], // 插屏C1620-右上X
    [930,556,1038,664], // 插屏C1621-右上X
    [876,1562,918,1604], // 插屏C1622-右上X
    [876,1494,918,1536], // 插屏C1623-右上X
    [876,1684,918,1726], // 插屏C1624-右上X
    [939,1694,981,1736], // 插屏C1625-右上X
    [928,972,976,1020], // 插屏C1626-右上X
    [876,1616,918,1658], // 插屏C1627-右上X
    [953,135,1001,183], // 插屏C1628-右上X
    [938,240,1016,318], // 插屏C1629-右上X
    [882,377,972,467], // 插屏C1630-右上X
    [939,568,1029,658], // 插屏C1631-右上X
    [962,1768,1022,1828], // 插屏C1632-右上X
    [624,965,864,1025], // 插屏C1633-右上X
    [987,1406,1041,1460], // 插屏C1634-右上X
    [819,148,954,214], // 插屏C1636-右上X
    [994,158,1039,203], // 插屏C1637-右上X
    [882,577,1044,892], // 插屏C1638-右上X
    [921,837,981,897], // 插屏C1639-右上X
    [921,898,981,958], // 插屏C1640-右上X
    [957,151,1005,199], // 插屏C1641-右上X
    [864,577,939,649], // 插屏C1642-右上X
    [880,415,952,487], // 插屏C1643-右上X
    [921,772,981,832], // 插屏C1644-右上X
    [904,336,976,408], // 插屏C1645-右上X
    [921,772,981,832], // 插屏C1646-右上X
    [723,529,928,601], // 插屏C1647-右上X
    [1011,940,1053,979], // 插屏C1648-右上X
    [842,945,888,991], // 插屏C1528-右上X
    [881,447,910,476], // 插屏C1529-右上X
    [896,606,974,684], // 插屏C1530-右上X
    [873,531,981,645], // 插屏C1531-右上X
    [987,1284,1041,1338], // 插屏C1532-右上X
    [909,719,1026,836], // 插屏C1533-右上X
    [842,884,888,930], // 插屏C1534-右上X
    [873,531,981,645], // 插屏C1535-右上X
    [933,552,1041,660], // 插屏C1536-右上X
    [746,378,992,438], // 插屏C1537-右上X
    [721,393,994,471], // 插屏C1538-右上X
    [793,393,994,471], // 插屏C1539-右上X
    [695,393,968,471], // 插屏C1540-右上X
    [720,378,966,438], // 插屏C1541-右上X
    [722,378,968,438], // 插屏C1542-右上X
    [957,531,1005,579], // 插屏C1543-右上X
    [957,409,1005,457] // 插屏C1544-右上X

];
var inter_wait_Bounds = [
    [450,1300,630,1366], // 去领奖励-中青
    [229,1311,851,1446], // 跳转B250-继续观看
    [230,1234,851,1378], // 插屏B251-留下看看
    [232,1312,848,1445], // 插屏B252-留下看看
    [450,1560,630,1626], // 插屏B253-继续观看
    [450,1548,630,1612], // 插屏B254-继续观看
    [454,1548,626,1612], // 插屏B255-继续观看
    [120,1325,960,1474], // 插屏B256-继续观看
    [244,1314,836,1443], // 插屏B257-继续观看
    [120,1281,960,1430], // 插屏B258-继续观看
    [541,1228,924,1360], // 插屏B259-抓住奖励机会
    [541,1231,904,1359], // 插屏B262-抓住奖励机会
    [229,1372,851,1507], // 插屏B263-继续观看
    [258,1540,804,1588], // 插屏B264-继续播放视频内容
    [387,1585,702,1636], // 插屏B265-继续播放视频内容
    [387,1564,702,1612], // 插屏B266-继续播放视频内容
    [387,1789,802,1840], // 插屏B267-继续播放视频内容
    [540,1261,972,1395], // 插屏B268-抓住奖励机会
    [541,1272,924,1404], // 插屏B269-抓住奖励机会
    [245,1314,835,1443] // 插屏B270-继续观看
];
var drop_Bounds = [
    [450,1966,630,2062], // 插屏B101-放弃福利
    [467,1711,611,1753], // 插屏B102-放弃福利
    [219,1327,861,1442], // 插屏B103-关闭广告
    [605,1694,785,1736], // 插屏B104-继续看广告/视频
    [102,1275,978,1424], // 插屏B105-放弃
    [468,1630,612,1678], // 插屏B106-确认退出
    [387,1585,702,1636], // 插屏B107-继续播放视频内容
    [387,1795,702,1843], // 插屏B108-继续播放视频内容
    [131,1219,539,1359] // 插屏B109-残忍离开
];
var over_Bounds = [
    [978,136,1032,190], // 关闭X-中青
    // 关闭控件 - 右上X系列
    [927,124,999,196], // 关闭广001-右上X
    [936,148,1032,232], // 关闭广002-右上X
    [870,376,942,448], // 关闭广003-右上X
    [951,169,1033,251], // 关闭广004-右上X
    [975,193,1010,228], // 关闭广005-右上X
    [957,112,1035,190], // 关闭广006-右上X
    [945,112,1035,202], // 关闭广007-右上X
    [969,121,1047,199], // 关闭广008-右上X
    [938,240,1016,318], // 关闭广009-右上X
    [972,196,1008,232], // 关闭广010-右上X
    [969,127,1047,205], // 关闭广011-右上X
    [945,148,1035,238], // 关闭广012-右上X
    [966,172,1002,208], // 关闭广013-右上X
    [965,165,1002,202], // 关闭广014-右上X
    [957,166,1005,214], // 关闭广015-右上X
    [972,103,1059,208], // 关闭广016-右上X
    [959,161,1007,209], // 关闭广017-右上X
    [966,133,1035,202], // 关闭广018-右上X
    [981,121,1047,187], // 关闭广019-右上X
    [976,102,1060,204], // 关闭广020-右上X
    [969,136,1047,214], // 关闭广021-右上X
    [951,111,1033,193], // 关闭广022-右上X
    [948,112,1032,196], // 关闭广023-右上X
    [927,89,1059,221], // 关闭广024-右上X
    [959,145,1007,193], // 关闭广025-右上X
    [959,142,1007,190], // 关闭广026右上X
    [957,142,1007,190], // 关闭广027右上X
    [972,136,1008,172], // 关闭广028右上X
    [963,133,1035,205], // 关闭广029-右上X
    [927,89,1059,221], // 关闭广030-右上X
    [951,145,1023,217], // 关闭广031-右上X
    [972,124,1044,196], // 关闭广032-右上X
    // 关闭控件 - 其他系列
    [930,418,1008,496], // 关闭广1025-右上X
    [918,421,976,479], // 关闭广1026-右上X
    [918,471,1026,585], // 关闭广1028-右上X
    [933,274,1002,343], // 关闭广1030-右上X
    [930,336,1002,408], // 关闭广1031-右上X
    [963,341,1021,399], // 关闭广1032-右上X

    // 关闭控件 - 左上X系列
    [120,88,240,226], // 关闭广101-左上X
    [150,109,240,199], // 关闭广102-左上X
    [20,93,132,206], // 关闭广103-左上X
    [0,88,156,226], // 关闭广1104-左上X
    [35,108,123,196], // 关闭广1105-左上X
    [0,88,150,250], // 关闭广1106-左上X
    [165,193,207,235], // 关闭广1107-左上X
    [27,118,111,178], // 关闭广1108-左上X

    // 关闭控件 - 右下X系列
    [930,2191,1002,2263], // 关闭广301-右下X
    [960,2191,1032,2263], // 关闭广302-右下X

    // 关闭控件 - 跳过系列
    // Note: over_400 has no bounds array
    [895,2210,998,2259], // 关闭广401-跳过
    [751,121,960,181], // 关闭广402-跳过
    [912,125,996,182] // 关闭广403-跳过
];
var back_Bounds = [
    // 返回控件 - 点击后跳出弹窗确认
    [0,88,120,226], // 返回广201-左箭头
    [12,88,156,256], // 返回广202-左箭头
    [36,109,126,199], // 返回广203-左箭头
    [48,148,144,244], // 返回广204-左箭头
    [15,108,107,200], // 返回广205-左箭头
    [0,88,168,220], // 返回广206-左箭头
    [35,108,123,196], // 返回广207-左箭头
    [0,88,156,226], // 返回广208-左箭头
    [45,133,150,238], // 返回广209-左箭头
    [48,136,120,208], // 返回广210-左箭头
    [48,98,192,242] // 返回广211-左箭头
];
var trash_Bounds = [
    // 特殊控件 - 垃圾广告
    [918,325,1080,427], // 垃圾广-快手垃圾
    [144,1082,936,1163], // 垃圾广-聊缘下载
    [675,248,1044,287], // 垃圾广-强制清理
    [687,248,990,287] // 垃圾广-温馨天气  
];
var marker_Bounds = [
    // 标记控件 - 小喇叭系列
    [60,148,120,208], // 标记001-小喇叭001
    [129,745,189,805], // 标记002-小喇叭002
    [215,965,275,1025], // 标记003-小喇叭003
    [174,178,238,242], // 标记004-小喇叭004
    [42,121,102,181], // 标记005-小喇叭005
    [817,585,887,655], // 标记006-小喇叭006
    [98,378,158,438], // 标记007-小喇叭007
    [137,741,269,819], // 标记008-小喇叭008
    [63,151,123,211], // 标记009-小喇叭009
    [12,121,84,193], // 标记010-小喇叭010
    [12,118,84,190], // 标记011-小喇叭011
    [106,378,166,438], // 标记012-小喇叭012
    [177,181,243,247], // 标记013-小喇叭013
    [174,120,238,184], // 标记014-小喇叭014
    [177,121,243,187], // 标记014-小喇叭015
    [301,523,361,583], // 标记015-小喇叭016
    [141,541,189,589], // 标记015-小喇叭017
    [123,378,183,438], // 标记018-小喇叭018

    // 标记控件 - 其他系列
    [26,374,313,430], // 标记101-其他
    [0,380,748,471], // 标记102-其他
    [230,238,849,410], // 标记103-其他
    [0,388,765,433], // 标记104-其他
    [30,112,162,190], // 标记105-其他
    [47,169,129,251], // 标记106-其他
    [147,162,200,215], // 标记107-礼物盒
    [942,2173,1014,2209], // 标记108-广告
    [132,518,246,590], // 标记109-反馈
    [33,121,156,187], // 标记110-反馈
    [30,136,162,214], // 标记111-反馈

    // Marker系列 - 用于快速判断广告是否存在
    [0,388,510,475], // 标记201-读秒
    [210,403,258,454], // 标记202-读秒
    [227,139,501,220] // 标记203-读秒
];

var adDetector = {

    adHandler:function() {
        // 检查是否收到停止请求
        if (typeof StateManager !== 'undefined' && StateManager.isStopRequested()) {
            console.log("[adHandler] 收到停止请求，跳过广告检测");
            return false;
        }
        
        var adDetected = false;
        
        // 检测所有类型的广告，一旦检测到就标记为已检测到，但继续检测其他类型以确保完整性
        adDetected = this.adDetector_system() || adDetected;
        adDetected = this.adDetector_jump() || adDetected;
        adDetected = this.adDetector_jump_ignore() || adDetected;
        adDetected = this.adDetector_drop() || adDetected;
        adDetected = this.adDetector_inter() || adDetected;
        adDetected = this.adDetector_inter_wait() || adDetected;
        adDetected = this.adDetector_over() || adDetected;
        adDetected = this.adDetector_back() || adDetected;
        adDetected = this.adDetector_trash() || adDetected;
        adDetected = this.adDetector_pass() || adDetected;
        adDetected = this.adDetector_marker() || adDetected;
        
        // 更新时间戳
        if (typeof StateManager !== 'undefined') {
            var currentTime = new Date().getTime();
            if (adDetected) {
                // 如果检测到广告，更新广告检测时间戳
                StateManager.set('lastAdDetectionTime', currentTime);
            } else {
                // 如果没有检测到广告，更新无广告时间戳
                StateManager.set('lastNoAdTime', currentTime);
            }
        }
        
        return adDetected;
    },    
    adHandler_click:function(rect) {
        randomSleep(500,800);
        
        // 兼容性处理：检查rect是否具有centerX和centerY方法
        if (typeof rect.centerX === 'function' && typeof rect.centerY === 'function') {
            // 标准Bounds对象
            humanClick(rect.centerX(), rect.centerY());
        } else if (rect.bounds && typeof rect.bounds === 'function') {
            // UiObject对象，需要获取bounds
            var bounds = rect.bounds();
            var centerX = (bounds.left + bounds.right) / 2;
            var centerY = (bounds.top + bounds.bottom) / 2;
            humanClick(centerX, centerY);
        } else if (typeof rect.left !== 'undefined' && typeof rect.top !== 'undefined' && 
                   typeof rect.right !== 'undefined' && typeof rect.bottom !== 'undefined') {
            // 直接的bounds对象
            var centerX = (rect.left + rect.right) / 2;
            var centerY = (rect.top + rect.bottom) / 2;
            humanClick(centerX, centerY);
        } else {
            // 无法确定对象类型，记录错误并跳过点击
            console.error("[adHandler_click] 无法识别的对象类型: " + JSON.stringify(rect));
            return;
        }
        randomSleep(800,1500);
    },
    
    adDetector_pass:function() {
        // 检查是否收到停止请求
        if (typeof StateManager !== 'undefined' && StateManager.isStopRequested()) {
            return false;
        }
        
        // 直接检测包含"跳过"的控件
        var skipControl = textContains("跳过").visibleToUser(true).findOnce();
        if (skipControl) {
            console.log("[adDetector_pass] 检测到包含'跳过'的控件");
            this.adHandler_click(skipControl);
            return true; // 检测到广告
        }
        return false; // 未检测到广告
    },
    adDetector_system:function() {
        // 检查是否收到停止请求
        if (typeof StateManager !== 'undefined' && StateManager.isStopRequested()) {
            return false;
        }
        
        // 遍历systemBounds列表进行检查
        for (let i = 0; i < system_Bounds.length; i++) {
            let boundsArray = system_Bounds[i];
            
            // 检查boundsArray是否有效
            if (!Array.isArray(boundsArray) || boundsArray.length !== 4) {
                console.warn("[adDetector_system] 无效的boundsArray: " + JSON.stringify(boundsArray));
                continue;
            }
            
            let rect = bounds(boundsArray[0], boundsArray[1], boundsArray[2], boundsArray[3])
                        .visibleToUser(true)
                        .findOnce();
            if (rect) {
                console.log("[adDetector_system] 检测到系统广告，坐标: [" + boundsArray.join(",") + "]");
                this.adHandler_click(rect); 
                installApp();
                return true; // 检测到广告
            }
        }
        return false; // 未检测到广告
    },

    adDetector_jump:function() {
        // 检查是否收到停止请求
        if (typeof StateManager !== 'undefined' && StateManager.isStopRequested()) {
            return false;
        }
        
        for (let i = 0; i < jump_Bounds.length; i++) {
            let boundsArray = jump_Bounds[i];
            
            // 检查boundsArray是否有效
            if (!Array.isArray(boundsArray) || boundsArray.length !== 4) {
                console.warn("[adDetector_jump] 无效的boundsArray: " + JSON.stringify(boundsArray));
                continue;
            }
            
            let rect = bounds(boundsArray[0], boundsArray[1], boundsArray[2], boundsArray[3])
                        .visibleToUser(true)
                        .findOnce();
            if (rect) {
                console.log("[adDetector_jump] 检测到跳转广告，坐标: [" + boundsArray.join(",") + "]");
                this.adHandler_click(rect);
                randomSleep(18000,20000);
                return true; // 检测到广告
            }
        }
        return false; // 未检测到广告
    },

    adDetector_jump_ignore:function() {
        // 检查是否收到停止请求
        if (typeof StateManager !== 'undefined' && StateManager.isStopRequested()) {
            return false;
        }
        
        // 获取忽略列表，如果不存在则初始化为空对象
        var adIgnoreCounts = StateManager.get('adIgnoreCounts') || {};
        
        for (let i = 0; i < jump_ignore_Bounds.length; i++) {
            let boundsArray = jump_ignore_Bounds[i];
            
            // 检查boundsArray是否有效
            if (!Array.isArray(boundsArray) || boundsArray.length !== 4) {
                console.warn("[adDetector_jump_ignore] 无效的boundsArray: " + JSON.stringify(boundsArray));
                continue;
            }
            
            // 根据坐标生成对应的键值
            let coordKey = boundsArray.join(',');
            
            // 1. 先检查忽略列表，如果存在相同的坐标键，就跳过
            if (adIgnoreCounts[coordKey]) {
                console.log("跳过已忽略的坐标: " + coordKey);
                continue; // 跳过这个检测，继续执行后面的检测
            }
            
            // 2. 如果忽略列表中不存在，正常执行广告检测
            let rect = bounds(boundsArray[0], boundsArray[1], boundsArray[2], boundsArray[3])
                        .visibleToUser(true)
                        .findOnce();
            
            if (rect) {
                console.log("检测到跳转忽略广告，坐标: " + coordKey);
                
                // 3. 检测到控件后，添加到忽略列表
                adIgnoreCounts[coordKey] = true;
                StateManager.set('adIgnoreCounts', adIgnoreCounts);
                
                // 执行广告处理
                this.adHandler_click(rect); 
                randomSleep(18000,20000);
                return true; // 检测到广告
            }
        }
        return false; // 未检测到广告
    },

    adDetector_inter:function() {
        // 检查是否收到停止请求
        if (typeof StateManager !== 'undefined' && StateManager.isStopRequested()) {
            return false;
        }
        
        for (let i = 0; i < inter_Bounds.length; i++) {
            let boundsArray = inter_Bounds[i];
            
            // 检查boundsArray是否有效
            if (!Array.isArray(boundsArray) || boundsArray.length !== 4) {
                console.warn("[adDetector_inter] 无效的boundsArray: " + JSON.stringify(boundsArray));
                continue;
            }
            
            let rect = bounds(boundsArray[0], boundsArray[1], boundsArray[2], boundsArray[3])
                        .visibleToUser(true)
                        .findOnce();
            if (rect) {
                console.log("[adDetector_inter] 检测到插屏广告，坐标: [" + boundsArray.join(",") + "]");
                this.adHandler_click(rect); 
                return true; // 检测到广告
            }
        }
        return false; // 未检测到广告
    },

    adDetector_inter_wait:function() {
        // 检查是否收到停止请求
        if (typeof StateManager !== 'undefined' && StateManager.isStopRequested()) {
            return false;
        }
        
        for (let i = 0; i < inter_wait_Bounds.length; i++) {
            let boundsArray = inter_wait_Bounds[i];
            
            // 检查boundsArray是否有效
            if (!Array.isArray(boundsArray) || boundsArray.length !== 4) {
                console.warn("[adDetector_inter_wait] 无效的boundsArray: " + JSON.stringify(boundsArray));
                continue;
            }
            
            let rect = bounds(boundsArray[0], boundsArray[1], boundsArray[2], boundsArray[3])
                        .visibleToUser(true)
                        .findOnce();
            if (rect) {
                console.log("[adDetector_inter_wait] 检测到插屏等待广告，坐标: [" + boundsArray.join(",") + "]");
                this.adHandler_click(rect); 
                randomSleep(18000,20000);
                return true; // 检测到广告
            }
        }
        return false; // 未检测到广告
    },

    adDetector_drop:function() {
        // 检查是否收到停止请求
        if (typeof StateManager !== 'undefined' && StateManager.isStopRequested()) {
            return false;
        }
        
        for (let i = 0; i < drop_Bounds.length; i++) {
            let boundsArray = drop_Bounds[i];
            
            // 检查boundsArray是否有效
            if (!Array.isArray(boundsArray) || boundsArray.length !== 4) {
                console.warn("[adDetector_drop] 无效的boundsArray: " + JSON.stringify(boundsArray));
                continue;
            }
            
            let rect = bounds(boundsArray[0], boundsArray[1], boundsArray[2], boundsArray[3])
                        .visibleToUser(true)
                        .findOnce();
            if (rect) {
                console.log("[adDetector_drop] 检测到放弃广告，坐标: [" + boundsArray.join(",") + "]");
                this.adHandler_click(rect); 
                return true; // 检测到广告
            }
        }
        return false; // 未检测到广告
    },

    adDetector_over:function() {     
        // 检查是否收到停止请求
        if (typeof StateManager !== 'undefined' && StateManager.isStopRequested()) {
            return false;
        }
        
        for (let i = 0; i < over_Bounds.length; i++) {
            let boundsArray = over_Bounds[i];
            
            // 检查boundsArray是否有效
            if (!Array.isArray(boundsArray) || boundsArray.length !== 4) {
                console.warn("[adDetector_over] 无效的boundsArray: " + JSON.stringify(boundsArray));
                continue;
            }
            
            let rect = bounds(boundsArray[0], boundsArray[1], boundsArray[2], boundsArray[3])
                        .visibleToUser(true)
                        .findOnce();
            if (rect) {
                console.log("[adDetector_over] 检测到关闭广告，坐标: [" + boundsArray.join(",") + "]");
                this.adHandler_click(rect); 
                // 重置广告忽略列表，确保每次调用时不进行重复处理检测和处理
                if (typeof StateManager !== 'undefined' && typeof StateManager.resetOnceAdDetection === 'function') {
                    StateManager.resetOnceAdDetection();
                    console.log("已重置广告忽略列表");
                }
                return true; // 检测到广告
            }
        }
        return false; // 未检测到广告
    },

    adDetector_back:function() {   
        // 检查是否收到停止请求
        if (typeof StateManager !== 'undefined' && StateManager.isStopRequested()) {
            return false;
        }
        
        for (let i = 0; i < back_Bounds.length; i++) {
            let boundsArray = back_Bounds[i];
            
            // 检查boundsArray是否有效
            if (!Array.isArray(boundsArray) || boundsArray.length !== 4) {
                console.warn("[adDetector_back] 无效的boundsArray: " + JSON.stringify(boundsArray));
                continue;
            }
            
            let rect = bounds(boundsArray[0], boundsArray[1], boundsArray[2], boundsArray[3])
                        .visibleToUser(true)
                        .findOnce();
            if (rect) {
                console.log("[adDetector_back] 检测到返回广告，坐标: [" + boundsArray.join(",") + "]");
                this.adHandler_click(rect); 
                // 返回控件统一检查是否需要点击残忍离开----广告配置中取消残忍离开
                var result = text("残忍离开").visibleToUser(true).findOnce();
                if (result) {
                    this.adHandler_click(result);
                }
                return true; // 检测到广告
            }
        }
        return false; // 未检测到广告
    },

    adDetector_trash:function() {     
        // 检查是否收到停止请求
        if (typeof StateManager !== 'undefined' && StateManager.isStopRequested()) {
            return false;
        }
        
        for (let i = 0; i < trash_Bounds.length; i++) {
            let boundsArray = trash_Bounds[i];
            
            // 检查boundsArray是否有效
            if (!Array.isArray(boundsArray) || boundsArray.length !== 4) {
                console.warn("[adDetector_trash] 无效的boundsArray: " + JSON.stringify(boundsArray));
                continue;
            }
            
            let rect = bounds(boundsArray[0], boundsArray[1], boundsArray[2], boundsArray[3])
                        .visibleToUser(true)
                        .findOnce();
            if (rect) {
                console.log("[adDetector_trash] 检测到垃圾广告，坐标: [" + boundsArray.join(",") + "]");
                failtureHandler["清理后台"]();
                return true; // 检测到广告
            }
        }
        return false; // 未检测到广告
    },

    adDetector_marker:function() { 
        // 检查是否收到停止请求
        if (typeof StateManager !== 'undefined' && StateManager.isStopRequested()) {
            return false;
        }
        
        for (let i = 0; i < marker_Bounds.length; i++) {
            let boundsArray = marker_Bounds[i];
            
            // 检查boundsArray是否有效
            if (!Array.isArray(boundsArray) || boundsArray.length !== 4) {
                console.warn("[adDetector_marker] 无效的boundsArray: " + JSON.stringify(boundsArray));
                continue;
            }
            
            let rect = bounds(boundsArray[0], boundsArray[1], boundsArray[2], boundsArray[3])
                        .visibleToUser(true)
                        .findOnce();
            if (rect) {
                console.log("[adDetector_marker] 检测到标记广告，坐标: [" + boundsArray.join(",") + "]");
                randomSleep(8000,10000);
                return true; // 检测到广告
            }
        }
        return false; // 未检测到广告
    }
};


// 导出模块
if (typeof module !== 'undefined' && module.exports) {
    module.exports = adDetector;
} else if (typeof window !== 'undefined' && window) {
    window.adDetector = adDetector;
} else if (typeof global !== 'undefined') {
    global.adDetector = adDetector;
}





